home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio 2000
/
Ham Radio 2000.iso
/
ham2000
/
tcp_ip
/
os2
/
pmnos11s
/
lpdbann.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-07-30
|
26KB
|
1,513 lines
/* Internet LPD Server banner
* written by David Johnson (dave@cs.olemiss.edu)
*
* This code is in the public domain.
*
* Revision History:
*
* Revision 1.0 91/09/04 dave
* Initial Release
*
*/
#include <stdio.h>
#include <fcntl.h>
#include <ctype.h>
#include <time.h>
#include <sys/stat.h>
#ifdef __TURBOC__
#include <io.h>
#include <dir.h>
#endif
#include "global.h"
#include "mbuf.h"
#include "proc.h"
#include "iface.h"
#include "socket.h"
#include "dirutil.h"
#include "commands.h"
#include "files.h"
#include "lp.h"
#include "lpd.h"
#include "lpdfilt.h"
extern char lrgchars[][12]; /* defined below */
/* in lpdfilt.c */
extern void output_char __ARGS((struct filter_stream *io_stream, int c));
extern void output_string __ARGS((struct filter_stream *io_stream, char *s));
extern void stream_flush __ARGS((struct filter_stream *io_stream));
/* local functions - exported to lpdunsp.c */
void print_banner __ARGS((struct LPDtrans *LPD, struct filter_stream *io_stream, char *username));
/* local functions - private */
static void print_large __ARGS((char *string, int width, struct filter_stream *io_stream));
/*
* Print a banner for the current job
*/
void
print_banner( LPD, io_stream, username )
struct LPDtrans *LPD;
struct filter_stream *io_stream;
char *username;
{
struct LPDfilter *fptr;
struct filter_stream output;
struct filter_parms *parms;
int s[2], sync;
char *time_string;
time_t current_time;
void (*process) __ARGS((int unused,void *parms,void *unused2));
(void) time( ¤t_time );
time_string = ctime( ¤t_time );
rip( time_string );
socketpair( AF_LOCAL, SOCK_STREAM, 0, s );
seteol( s[0], "\n" );
seteol( s[1], "\n" );
output.type = IO_SOCKET;
output.stream.socket = s[0];
/*
* locate filter info
*/
process = NULLVFP;
fptr = filter_list;
while( fptr->name != NULL ) {
if( strcmp( fptr->name, LPD->pc->OF ) == 0 ) {
process = fptr->process;
break;
}
fptr++;
}
if( process == NULLVFP ) {
lpd_log( LPD, "print_banner: filter (%s) not found", LPD->pc->OF );
return;
}
YIELD;
/*
* Set up parameters for output filter
*/
parms = mallocw( sizeof( struct filter_parms ) );
parms->printer_name = LPD->name;
parms->width = 0;
parms->length = 0;
parms->literal = 1;
parms->indent = 0;
parms->class = NULL;
parms->jobname = NULL;
parms->account = NULL;
parms->login_name = NULL;
parms->host = NULL;
parms->format = 'l';
parms->af_file = NULL;
parms->ps_start = NULL;
parms->ps_end = NULL;
parms->input.type = IO_SOCKET;
parms->input.stream.socket = s[1];
parms->pages = 0;
parms->output = *io_stream;
parms->sync = &sync;
newproc("LPD filter",2048,process,0,(void *)parms,NULL,0);
/*
* Print the banner
*/
if( LPD->pc->SB ) { /* short banner */
output_string( &output, username );
output_char( &output, '@' );
output_string( &output, LPD->job->hostname );
if( LPD->job->jobname ) {
output_string( &output, " Job: " );
output_string( &output, LPD->job->jobname );
}
output_string( &output, " Date: " );
output_string( &output, time_string );
output_char( &output, '\n' );
} else { /* normal banner */
output_string( &output, "\n\n\n" );
print_large( username, LPD->job->width, &output );
output_string( &output, "\n\n" );
print_large( LPD->job->jobname, LPD->job->width, &output );
output_string( &output, "\n\n\n\n\t\t\t\t\tUser: " );
output_string( &output, username );
output_string( &output, "\n\t\t\t\t\tName: " );
output_string( &output, LPD->job->person );
output_string( &output, "\n\t\t\t\t\tDate: " );
output_string( &output, time_string );
if( LPD->job->jobname ) {
output_string( &output, "\n\t\t\t\t\tJob: " );
output_string( &output, LPD->job->jobname );
}
output_string( &output, "\n\t\t\t\t\tClass: " );
output_string( &output, LPD->job->class );
output_char( &output, '\n' );
}
output_string( &output, LPD->pc->FF );
close_s( output.stream.socket );
YIELD;
pwait( &sync );
free( parms );
}
/*
* Print a line of LARGE characters for the specified string
*/
static void
print_large( string, width, io_stream )
char *string;
int width;
struct filter_stream *io_stream;
{
int scanline, scancol, charcol, not_empty;
char line[256], oc, nc, bits, *lp, *sp;
for( scanline = 0; scanline < 12; scanline++ ) {
charcol = not_empty = 0;
lp = line;
sp = string;
while( *sp && charcol < width - 7 ) { /* don't overflow buffer */
nc = ((oc = *sp) - ' ') & 0x7f;
bits = lrgchars[nc][scanline];
if( bits )
not_empty++;
scancol = 7;
while( scancol-- ) {
*lp++ = bits & 0x40 ? oc : ' ';
bits <<= 1;
}
*lp++ = ' ';
*lp++ = ' ';
sp++;
charcol += 9;
}
*lp++ = '\n';
*lp = 0;
if( strlen( line ) > width ) { /* truncate line */
lp = line + width;
*lp++ = '\n';
*lp = 0;
}
if( not_empty )
output_string( io_stream, line );
else
output_char( io_stream, '\n' );
YIELD;
}
}
/*
* large banner character definitions
*/
#define c_______ 0x00
#define c______1 0x01
#define c_____1_ 0x02
#define c____1__ 0x04
#define c____11_ 0x06
#define c___1___ 0x08
#define c___1__1 0x09
#define c___1_1_ 0x0A
#define c___11__ 0x0C
#define c__1____ 0x10
#define c__1__1_ 0x12
#define c__1_1__ 0x14
#define c__11___ 0x18
#define c__111__ 0x1C
#define c__111_1 0x1D
#define c__1111_ 0x1E
#define c__11111 0x1F
#define c_1_____ 0x20
#define c_1____1 0x21
#define c_1___1_ 0x22
#define c_1__1__ 0x24
#define c_1_1___ 0x28
#define c_1_1__1 0x29
#define c_1_1_1_ 0x2A
#define c_11____ 0x30
#define c_11_11_ 0x36
#define c_111___ 0x38
#define c_111__1 0x39
#define c_111_1_ 0x3A
#define c_1111__ 0x3C
#define c_1111_1 0x3D
#define c_11111_ 0x3E
#define c_111111 0x3F
#define c1______ 0x40
#define c1_____1 0x41
#define c1____1_ 0x42
#define c1____11 0x43
#define c1___1__ 0x44
#define c1___1_1 0x45
#define c1___11_ 0x46
#define c1__1___ 0x48
#define c1__1__1 0x49
#define c1__11_1 0x4D
#define c1__1111 0x4F
#define c1_1____ 0x50
#define c1_1___1 0x51
#define c1_1_1_1 0x55
#define c1_1_11_ 0x56
#define c1_111__ 0x5C
#define c1_1111_ 0x5E
#define c11____1 0x61
#define c11___1_ 0x62
#define c11___11 0x63
#define c11_1___ 0x68
#define c11_1__1 0x69
#define c111_11_ 0x76
#define c1111___ 0x78
#define c11111__ 0x7C
#define c111111_ 0x7E
#define c1111111 0x7F
char lrgchars[][12] = {
{ c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______ },
{ c__11___,
c__11___,
c__11___,
c__11___,
c__11___,
c_______,
c_______,
c__11___,
c__11___,
c_______,
c_______ },
{ c_1__1__,
c_1__1__,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______ },
{ c_______,
c__1_1__,
c__1_1__,
c1111111,
c__1_1__,
c1111111,
c__1_1__,
c__1_1__,
c_______,
c_______,
c_______ },
{ c___1___,
c_11111_,
c1__1__1,
c1__1___,
c_11111_,
c___1__1,
c1__1__1,
c_11111_,
c___1___,
c_______,
c_______ },
{ c_1_____,
c1_1___1,
c_1___1_,
c____1__,
c___1___,
c__1____,
c_1___1_,
c1___1_1,
c_____1_,
c_______,
c_______ },
{ c_11____,
c1__1___,
c1___1__,
c_1_1___,
c__1____,
c_1_1__1,
c1___11_,
c1___11_,
c_111__1,
c_______,
c_______ },
{ c___11__,
c___11__,
c___1___,
c__1____,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______ },
{ c____1__,
c___1___,
c__1____,
c__1____,
c__1____,
c__1____,
c__1____,
c___1___,
c____1__,
c_______,
c_______ },
{ c__1____,
c___1___,
c____1__,
c____1__,
c____1__,
c____1__,
c____1__,
c___1___,
c__1____,
c_______,
c_______ },
{ c_______,
c___1___,
c1__1__1,
c_1_1_1_,
c__111__,
c_1_1_1_,
c1__1__1,
c___1___,
c_______,
c_______,
c_______ },
{ c_______,
c___1___,
c___1___,
c___1___,
c1111111,
c___1___,
c___1___,
c___1___,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_______,
c__11___,
c__11___,
c__1____,
c_1_____,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_______,
c1111111,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c__11___,
c__11___,
c_______,
c_______ },
{ c_______,
c______1,
c_____1_,
c____1__,
c___1___,
c__1____,
c_1_____,
c1______,
c_______,
c_______,
c_______ },
{ c_11111_,
c1_____1,
c1____11,
c1___1_1,
c1__1__1,
c1_1___1,
c11____1,
c1_____1,
c_11111_,
c_______,
c_______ },
{ c___1___,
c__11___,
c_1_1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c_11111_,
c_______,
c_______ },
{ c_11111_,
c1_____1,
c______1,
c_____1_,
c__111__,
c_1_____,
c1______,
c1______,
c1111111,
c_______,
c_______ },
{ c_11111_,
c1_____1,
c______1,
c______1,
c__1111_,
c______1,
c______1,
c1_____1,
c_11111_,
c_______,
c_______ },
{ c_____1_,
c____11_,
c___1_1_,
c__1__1_,
c_1___1_,
c1____1_,
c1111111,
c_____1_,
c_____1_,
c_______,
c_______ },
{ c1111111,
c1______,
c1______,
c11111__,
c_____1_,
c______1,
c______1,
c1____1_,
c_1111__,
c_______,
c_______,
c_______ },
{ c__1111_,
c_1_____,
c1______,
c1______,
c1_1111_,
c11____1,
c1_____1,
c1_____1,
c_11111_,
c_______,
c_______,
c_______ },
{ c1111111,
c1_____1,
c_____1_,
c____1__,
c___1___,
c__1____,
c__1____,
c__1____,
c__1____,
c_______,
c_______,
c_______ },
{ c_11111_,
c1_____1,
c1_____1,
c1_____1,
c_11111_,
c1_____1,
c1_____1,
c1_____1,
c_11111_,
c_______,
c_______,
c_______ },
{ c_11111_,
c1_____1,
c1_____1,
c1_____1,
c_111111,
c______1,
c______1,
c1_____1,
c_1111__,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c__11___,
c__11___,
c_______,
c_______,
c__11___,
c__11___,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c__11___,
c__11___,
c_______,
c_______,
c__11___,
c__11___,
c__1____,
c_1_____,
c_______ },
{ c____1__,
c___1___,
c__1____,
c_1_____,
c1______,
c_1_____,
c__1____,
c___1___,
c____1__,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1111111,
c_______,
c1111111,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______ },
{ c__1____,
c___1___,
c____1__,
c_____1_,
c______1,
c_____1_,
c____1__,
c___1___,
c__1____,
c_______,
c_______,
c_______ },
{ c__1111_,
c_1____1,
c_1____1,
c______1,
c____11_,
c___1___,
c___1___,
c_______,
c___1___,
c_______,
c_______,
c_______ },
{ c__1111_,
c_1____1,
c1__11_1,
c1_1_1_1,
c1_1_1_1,
c1_1111_,
c1______,
c_1____1,
c__1111_,
c_______,
c_______,
c_______ },
{ c__111__,
c_1___1_,
c1_____1,
c1_____1,
c1111111,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c_______,
c_______,
c_______ },
{ c111111_,
c_1____1,
c_1____1,
c_1____1,
c_11111_,
c_1____1,
c_1____1,
c_1____1,
c111111_,
c_______,
c_______,
c_______ },
{ c__1111_,
c_1____1,
c1______,
c1______,
c1______,
c1______,
c1______,
c_1____1,
c__1111_,
c_______,
c_______,
c_______ },
{ c11111__,
c_1___1_,
c_1____1,
c_1____1,
c_1____1,
c_1____1,
c_1____1,
c_1___1_,
c11111__,
c_______,
c_______,
c_______ },
{ c1111111,
c1______,
c1______,
c1______,
c111111_,
c1______,
c1______,
c1______,
c1111111,
c_______,
c_______,
c_______ },
{ c1111111,
c1______,
c1______,
c1______,
c111111_,
c1______,
c1______,
c1______,
c1______,
c_______,
c_______,
c_______ },
{ c__1111_,
c_1____1,
c1______,
c1______,
c1______,
c1__1111,
c1_____1,
c_1____1,
c__1111_,
c_______,
c_______,
c_______ },
{ c1_____1,
c1_____1,
c1_____1,
c1_____1,
c1111111,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c_______,
c_______,
c_______ },
{ c_11111_,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c_11111_,
c_______,
c_______,
c_______ },
{ c__11111,
c____1__,
c____1__,
c____1__,
c____1__,
c____1__,
c____1__,
c1___1__,
c_111___,
c_______,
c_______,
c_______ },
{ c1_____1,
c1____1_,
c1___1__,
c1__1___,
c1_1____,
c11_1___,
c1___1__,
c1____1_,
c1_____1,
c_______,
c_______,
c_______ },
{ c1______,
c1______,
c1______,
c1______,
c1______,
c1______,
c1______,
c1______,
c1111111,
c_______,
c_______,
c_______ },
{ c1_____1,
c11___11,
c1_1_1_1,
c1__1__1,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c_______,
c_______,
c_______ },
{ c1_____1,
c11____1,
c1_1___1,
c1__1__1,
c1___1_1,
c1____11,
c1_____1,
c1_____1,
c1_____1,
c_______,
c_______,
c_______ },
{ c__111__,
c_1___1_,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c_1___1_,
c__111__,
c_______,
c_______,
c_______ },
{ c111111_,
c1_____1,
c1_____1,
c1_____1,
c111111_,
c1______,
c1______,
c1______,
c1______,
c_______,
c_______,
c_______ },
{ c__111__,
c_1___1_,
c1_____1,
c1_____1,
c1_____1,
c1__1__1,
c1___1_1,
c_1___1_,
c__111_1,
c_______,
c_______,
c_______ },
{ c111111_,
c1_____1,
c1_____1,
c1_____1,
c111111_,
c1__1___,
c1___1__,
c1____1_,
c1_____1,
c_______,
c_______,
c_______ },
{ c_11111_,
c1_____1,
c1______,
c1______,
c_11111_,
c______1,
c______1,
c1_____1,
c_11111_,
c_______,
c_______,
c_______ },
{ c1111111,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c_______,
c_______,
c_______ },
{ c1_____1,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c1_____1,
c_11111_,
c_______,
c_______,
c_______ },
{ c1_____1,
c1_____1,
c1_____1,
c_1___1_,
c_1___1_,
c__1_1__,
c__1_1__,
c___1___,
c___1___,
c_______,
c_______,
c_______ },
{ c1_____1,
c1_____1,
c1_____1,
c1_____1,
c1__1__1,
c1__1__1,
c1_1_1_1,
c11___11,
c1_____1,
c_______,
c_______,
c_______ },
{ c1_____1,
c1_____1,
c_1___1_,
c__1_1__,
c___1___,
c__1_1__,
c_1___1_,
c1_____1,
c1_____1,
c_______,
c_______,
c_______ },
{ c1_____1,
c1_____1,
c_1___1_,
c__1_1__,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c_______,
c_______,
c_______ },
{ c1111111,
c______1,
c_____1_,
c____1__,
c___1___,
c__1____,
c_1_____,
c1______,
c1111111,
c_______,
c_______,
c_______ },
{ c_1111__,
c_1_____,
c_1_____,
c_1_____,
c_1_____,
c_1_____,
c_1_____,
c_1_____,
c_1111__,
c_______,
c_______,
c_______ },
{ c_______,
c1______,
c_1_____,
c__1____,
c___1___,
c____1__,
c_____1_,
c______1,
c_______,
c_______,
c_______,
c_______ },
{ c__1111_,
c_____1_,
c_____1_,
c_____1_,
c_____1_,
c_____1_,
c_____1_,
c_____1_,
c__1111_,
c_______,
c_______,
c_______ },
{ c___1___,
c__1_1__,
c_1___1_,
c1_____1,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c1111111,
c_______ },
{ c__11___,
c__11___,
c___1___,
c____1__,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_1111__,
c_____1_,
c_11111_,
c1_____1,
c1____11,
c_1111_1,
c_______,
c_______,
c_______ },
{ c1______,
c1______,
c1______,
c1_111__,
c11___1_,
c1_____1,
c1_____1,
c11___1_,
c1_111__,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_1111__,
c1____1_,
c1______,
c1______,
c1____1_,
c_1111__,
c_______,
c_______,
c_______ },
{ c_____1_,
c_____1_,
c_____1_,
c_111_1_,
c1___11_,
c1____1_,
c1____1_,
c1___11_,
c_111_1_,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_1111__,
c1____1_,
c111111_,
c1______,
c1____1_,
c_1111__,
c_______,
c_______,
c_______ },
{ c___11__,
c__1__1_,
c__1____,
c__1____,
c11111__,
c__1____,
c__1____,
c__1____,
c__1____,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_111_1_,
c1___11_,
c1____1_,
c1____1_,
c1___11_,
c_111_1_,
c_____1_,
c1____1_,
c_1111__ },
{ c1______,
c1______,
c1______,
c1_111__,
c11___1_,
c1____1_,
c1____1_,
c1____1_,
c1____1_,
c_______,
c_______,
c_______ },
{ c_______,
c___1___,
c_______,
c__11___,
c___1___,
c___1___,
c___1___,
c___1___,
c__111__,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c____11_,
c_____1_,
c_____1_,
c_____1_,
c_____1_,
c_____1_,
c_____1_,
c_1___1_,
c__111__ },
{ c1______,
c1______,
c1______,
c1___1__,
c1__1___,
c1_1____,
c11_1___,
c1___1__,
c1____1_,
c_______,
c_______,
c_______ },
{ c__11___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c__111__,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1_1_11_,
c11_1__1,
c1__1__1,
c1__1__1,
c1__1__1,
c1__1__1,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1_111__,
c11___1_,
c1____1_,
c1____1_,
c1____1_,
c1____1_,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_1111__,
c1____1_,
c1____1_,
c1____1_,
c1____1_,
c_1111__,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1_111__,
c11___1_,
c1____1_,
c1____1_,
c11___1_,
c1_111__,
c1______,
c1______,
c1______ },
{ c_______,
c_______,
c_______,
c_111_1_,
c1___11_,
c1____1_,
c1____1_,
c1___11_,
c_111_1_,
c_____1_,
c_____1_,
c_____1_ },
{ c_______,
c_______,
c_______,
c1_111__,
c11___1_,
c1______,
c1______,
c1______,
c1______,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c_1111__,
c1____1_,
c_11____,
c___11__,
c1____1_,
c_1111__,
c_______,
c_______,
c_______ },
{ c_______,
c__1____,
c__1____,
c11111__,
c__1____,
c__1____,
c__1____,
c__1__1_,
c___11__,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1____1_,
c1____1_,
c1____1_,
c1____1_,
c1___11_,
c_111_1_,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1_____1,
c1_____1,
c1_____1,
c_1___1_,
c__1_1__,
c___1___,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1_____1,
c1__1__1,
c1__1__1,
c1__1__1,
c1__1__1,
c_11_11_,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1____1_,
c_1__1__,
c__11___,
c__11___,
c_1__1__,
c1____1_,
c_______,
c_______,
c_______ },
{ c_______,
c_______,
c_______,
c1____1_,
c1____1_,
c1____1_,
c1____1_,
c1___11_,
c_111_1_,
c_____1_,
c1____1_,
c_1111__ },
{ c_______,
c_______,
c_______,
c111111_,
c____1__,
c___1___,
c__1____,
c_1_____,
c111111_,
c_______,
c_______,
c_______ },
{ c___11__,
c__1____,
c__1____,
c__1____,
c_1_____,
c__1____,
c__1____,
c__1____,
c___11__,
c_______,
c_______,
c_______ },
{ c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c___1___,
c_______,
c_______,
c_______ },
{ c__11___,
c____1__,
c____1__,
c____1__,
c_____1_,
c____1__,
c____1__,
c____1__,
c__11___,
c_______,
c_______,
c_______ },
{ c_11____,
c1__1__1,
c____11_,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______,
c_______ },
{ c_1__1__,
c1__1__1,
c__1__1_,
c_1__1__,
c1__1__1,
c__1__1_,
c_1__1__,
c1__1__1,
c__1__1_,
c_______,
c_______,
c_______ },
};